package one.stand.mapper;

import one.stand.dto.SeeRecordDto;
import one.stand.model.CrmSeeRecordModel;
import one.stand.response.CrmCustomerAnalysisRespnse;
import one.stand.response.CustomerAnalysisResponse;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author Administrator
 */
public interface SeeRecordPublicMapper {

    /**
     * crm名片查看记录
     */
    List<CrmSeeRecordModel> getCrmSeeRecord(@Param("userId") Long userId, @Param("entranceType") Integer entranceType, @Param("seeType") Integer seeType, @Param("myCardId") Integer myCardId);

    /**
     * 客户个人分析
     */
    List<CrmCustomerAnalysisRespnse> countCustomerAnalysis(@Param("userId") Integer userId, @Param("cardId") Integer cardId, @Param("companyId") Integer companyId, @Param("dayNum") Integer dayNum);

    /**
     * @param cardId 自己的名片id
     * @param userId 客户id
     * @return
     */
    CustomerAnalysisResponse getCustomerAnalysis(@Param("cardId") Integer cardId, @Param("userId") Integer userId, @Param("seeType") Integer seeType, @Param("companyId") Integer companyId);

    Map<String, Object> getPcCount(@Param("userId") Integer userId, @Param("cardId") Integer cardId, @Param("companyId") Integer companyId);

    String getPcPhotos(@Param("cardId") Integer cardId, @Param("companyId") Integer companyId);

    Map<String, Object> getChangeCount(@Param("cardId") Integer cardId, @Param("companyId") Integer companyId, @Param("dayNum") Integer dayNum);

    Integer getChangeCountOne(@Param("cardId") Integer cardId, @Param("companyId") Integer companyId, @Param("dayNum") Integer dayNum, @Param("seeType") Integer seeType);

    List<Map<String, Object>> selectPcIndexCustomer(@Param("cardId") Integer cardId, @Param("companyId") Integer companyId);

    Integer selectVisitUser(@Param("cardId") Long cardId);

    Integer selectVisitNum(@Param("cardId") Long cardId);

    Long selectCount(@Param("type") Integer type, @Param("itmeId") Integer itmeId);

    List<Integer> selectByCardId(@Param("cardId") Integer cardId);

    Integer selectRandomPopularity20();

    SeeRecordDto select(@Param("type") Integer type, @Param("itmeId") Integer itmeId);

    String getBrowsePhoto(Integer cardId);

    void saveInit(@Param("type") Integer type, @Param("itmeId") Integer itmeId, @Param("num") Integer num);

    void updateRecordCount();

    void updateRecordRanking(@Param("type") Integer type, @Param("itmeId") Integer itmeId);

    int updateCountPopularityAdd(@Param("id") Integer id, @Param("num") Integer num);

    int updateCountPopularityAdd2(@Param("id") Integer id, @Param("num") Integer num);
}